//
// Created by ChaoDONG on 2021-03-23.
//

/* global.c -- uses an external variable */
#include <stdio.h>
int units = 0; /* an external variable */
/* 第1次声明为变量预留了存储空间，
 * 该声明构成了变量的定义,
 * 第1次声明被称为定义式声明（defining declaration）
 * 外部变量只能初始化一次，且必须在定义该变量时进行
 * */
void critic(void);
int main(void)
{
    extern int units; /* an optional redeclaration */
    /* 第2次声明只告诉编译器使用之前已创建的tern变量，所以这不是定义
     * 以上声明主要是为了指出该函数要使用这个外部变量
     * 第2次声明被称为引用式声明（referencing declaration）。 */

    printf("How many pounds to a firkin of butter?\n");
    scanf("%d", &units);
    while ( units != 56)
        critic();
    printf("You must have looked it up!\n");
    return 0;
}

void critic(void)
{
/* optional redeclaration omitted */
    printf("No luck, my friend. Try again.\n");
    scanf("%d", &units);
}
